package com.ym.medical.service;


import com.github.pagehelper.PageInfo;
import com.ym.core.utils.tkmybatis.IBaseSV;
import com.ym.medical.domain.entity.DoctorDetailsEntity;
import com.ym.medical.domain.entity.LabelsEntity;
import com.ym.medical.domain.param.DoctorDetailsParam;
import com.ym.medical.domain.param.LabelsParam;
import com.ym.medical.domain.vo.DoctorAddVo;
import com.ym.medical.domain.vo.DoctorAuditRecordVo;
import com.ym.medical.domain.vo.DoctorDetailListVo;
import com.ym.medical.domain.vo.DoctorDetailsVo;
import com.ym.medical.domain.vo.LabelsVo;

import java.util.List;
import java.util.Map;

public interface IDoctorDetailSV extends IBaseSV<DoctorDetailsEntity> {
    /**
     * 医生列表
     *
     * @param pageNo
     * @param limit
     * @param doctorDetailsModel
     * @return
     */
    PageInfo<DoctorDetailListVo> getDoctorDetailList(int pageNo, int limit, DoctorDetailsParam doctorDetailsModel);

    /**
     * 删除医生信息
     *
     * @param doctorIds 医生 long[]
     * @return
     */
    int deleteDoctor(Long[] doctorIds);

    /**
     * 医生所有列表
     * @param pageNo
     * @param limit
     * @param  model
     * @return
     */
    PageInfo<DoctorDetailsEntity> getAllDoctorList(int pageNo, int limit, DoctorDetailsParam model);

    /**
     * 新增医生
     * @param currId
     * @param addVo 医生对象
     * @return
     */
    int addDoctor(DoctorAddVo addVo,Long currId);

    /**
     * 医生信息更改
     *
     * @param updateVo
     * @return
     */
    int updateDoctor(DoctorAddVo updateVo, Long currId);

    /**
     * 医生导入
     *
     * @param doctorDetailsList
     * @return
     */
    Map<String, Object> importDoctor(List<DoctorDetailsParam> doctorDetailsList);

    /**
     * 医生标签添加
     * @param  currId
     * @param doctId 医生id
     * @param label  标签
     * @return
     */
    int addJobTitle(Long doctId, String label,Long currId);

    /**
     * 删除标签
     *
     * @param labId
     * @return
     */
    int deleteJobTitle(Long labId);

    /**
     * 医生
     *
     * @param doctId
     * @return
     */
    List<LabelsEntity> selectJobTitle(Long doctId);

    /***
     * t通讯录初始化
     * @param userId
     */
    void createDoctAddressBook(Long userId);


    /**
     * 添加医生编码校验(安医院)
     * @param doctCode
     * @param hosCode
     * @return
     */
    DoctorDetailsEntity repeatDoctCode(String doctCode,String hosCode);

    /**
     * 医生名下拉搜索
     * @param hosName
     * @param doctName
     * @return
     */
    List<DoctorDetailsVo> searchDoctName(String hosName, String doctName);

    /**
     * 审核列表
     * @param auditRecordVo
     * @param pageNo
     * @param limit
     * @return
     */
    PageInfo<DoctorAuditRecordVo> certRecordList(int pageNo, int limit, DoctorAuditRecordVo auditRecordVo);

    /**
     * 医生擅长所有标签
     * @return
     */
    List<LabelsVo> selectGoods(LabelsParam labelsModel);
}
